<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
	<title>Hardware Abstraction Layer</title>
</head>

<body>

<h1>Hardware Abstraction Layer</h1>

<p>Apart from being reminiscent of that wonderful AI in 2001 A Space Odessey a HAL or Hardware Abstraction
Layer is a useful way of conceptualising the physical components of a complex software/hardware system
and their possible interactions with software components.</p>

<p>In the RoboWorkbench the <b>HALRegistry</b> object manages a collection of <b>Components</b> which make up
the physical and sometimes logical parts of a robot. Typically the HALRegistry might contain Components like
a motor system, particular sensors and a 'brain'. These are the software descriptions of actual hardware components.
Additionally, for interaction purposes, the HALRegistry also contains a <b>Connection</b> and a <b>Command Queue</b>.
The command queue object is an example of a logical Component of the robot system.</p>

<p>Typically a HAL does not contain descriptions of each wheel, bearing, wire, ... of the hardware. It is an
<i>abstraction</i> which integrates real hardware with a software system. The HAL therefore is made up of component
descriptions of the more salient parts of a robot system, be they actual parts or convenient conceptualisations.</p>

</body>
</html>